﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Mail;

namespace PGI.LN
{
    public class ExceptionLn
    {
        public static void enviaError(string _tituloException, Exception ex, string _usuario)
        {
            try
            {
                MailMessage msg = new MailMessage();
                msg.To.Add(new MailAddress("desarrollo.pgi@gmail.com", "Desarrollo PGI"));
                msg.From = new MailAddress("desarrollo.pgi@gmail.com", "Service Delivery");
                msg.Subject = "PGI";
                msg.IsBodyHtml = true;
                msg.Body = armaCuerpoCorreo(_tituloException, ex, _usuario);
                msg.Priority = MailPriority.High;

                SmtpClient clientSmtp = new SmtpClient();
                clientSmtp.Port = 587;
                clientSmtp.Host = "smtp.gmail.com";
                clientSmtp.EnableSsl = true;
                clientSmtp.UseDefaultCredentials = false;
                clientSmtp.Credentials = new NetworkCredential("desarrollo.pgi@gmail.com", "123.pgi.");
                clientSmtp.DeliveryMethod = SmtpDeliveryMethod.Network;                

                clientSmtp.Send(msg);
            }
            catch
            {

            }
        }

        public static void enviaError(string _tituloException, Exception ex)
        {
            try
            {
                MailMessage msg = new MailMessage();
                msg.To.Add(new MailAddress("desarrollo.pgi@gmail.com", "Desarrollo PGI"));
                msg.From = new MailAddress("desarrollo.pgi@gmail.com", "Service Delivery");
                msg.Subject = "PGI";
                msg.IsBodyHtml = true;
                msg.Body = armaCuerpoCorreo(_tituloException, ex);
                msg.Priority = MailPriority.High;

                SmtpClient clientSmtp = new SmtpClient();
                clientSmtp.Port = 587;
                clientSmtp.Host = "smtp.gmail.com";
                clientSmtp.EnableSsl = true;
                clientSmtp.UseDefaultCredentials = false;
                clientSmtp.Credentials = new NetworkCredential("desarrollo.pgi@gmail.com", "123.pgi.");
                clientSmtp.DeliveryMethod = SmtpDeliveryMethod.Network;

                clientSmtp.Send(msg);
            }
            catch
            {

            }
        }

        public static void enviaError(string _tituloException, string _usuario)
        {
            try
            {
                MailMessage msg = new MailMessage();
                msg.To.Add(new MailAddress("desarrollo.pgi@gmail.com", "Desarrollo PGI"));
                msg.From = new MailAddress("desarrollo.pgi@gmail.com", "Service Delivery");
                msg.Subject = "PGI";
                msg.IsBodyHtml = true;
                msg.Body = armaCuerpoCorreo(_tituloException, _usuario);
                msg.Priority = MailPriority.High;

                SmtpClient clientSmtp = new SmtpClient();
                clientSmtp.Port = 587;
                clientSmtp.Host = "smtp.gmail.com";
                clientSmtp.EnableSsl = true;
                clientSmtp.UseDefaultCredentials = false;
                clientSmtp.Credentials = new NetworkCredential("desarrollo.pgi@gmail.com", "123.pgi.");
                clientSmtp.DeliveryMethod = SmtpDeliveryMethod.Network;

                clientSmtp.Send(msg);
            }
            catch
            {

            }
        }

        public static void enviaError(string _tituloException)
        {
            try
            {
                MailMessage msg = new MailMessage();
                msg.To.Add(new MailAddress("desarrollo.pgi@gmail.com", "Desarrollo PGI"));
                msg.From = new MailAddress("desarrollo.pgi@gmail.com", "Service Delivery");
                msg.Subject = "PGI";
                msg.IsBodyHtml = true;
                msg.Body = armaCuerpoCorreo(_tituloException);
                msg.Priority = MailPriority.High;

                SmtpClient clientSmtp = new SmtpClient();
                clientSmtp.Port = 587;
                clientSmtp.Host = "smtp.gmail.com";
                clientSmtp.EnableSsl = true;
                clientSmtp.UseDefaultCredentials = false;
                clientSmtp.Credentials = new NetworkCredential("desarrollo.pgi@gmail.com", "123.pgi.");
                clientSmtp.DeliveryMethod = SmtpDeliveryMethod.Network;

                clientSmtp.Send(msg);
            }
            catch
            {

            }
        }


        private static string armaCuerpoCorreo(string _tituloException, string _usuario)
        {
            StringBuilder cuerpoCorreo = new StringBuilder();
            string host = getHostName();
            string usuario = _usuario;

            cuerpoCorreo.AppendLine("<html>");
            cuerpoCorreo.AppendLine("    <head>");
            cuerpoCorreo.AppendLine("    <body>");

            cuerpoCorreo.AppendLine("<table border = '1' bordercolor='black' width='500'>");
            cuerpoCorreo.AppendLine("<tr>");
            cuerpoCorreo.AppendLine("<font face = 'arial '><font color = 'blue'>");
            cuerpoCorreo.AppendLine("<td align='left' width='75'>Seccion</td>");
            cuerpoCorreo.AppendLine("</font>");
            cuerpoCorreo.AppendLine("<font face = 'arial narrow'>");
            cuerpoCorreo.AppendLine("<td align='left'>" + _tituloException + "</td>");
            cuerpoCorreo.AppendLine("</font>");
            cuerpoCorreo.AppendLine("</tr>");


            cuerpoCorreo.AppendLine("<tr>");
            cuerpoCorreo.AppendLine("<font face = 'arial '><font color = 'blue'>");
            cuerpoCorreo.AppendLine("<td align='left' width='75'>Equipo</td>");
            cuerpoCorreo.AppendLine("</font>");
            cuerpoCorreo.AppendLine("<font face = 'arial narrow'>");
            cuerpoCorreo.AppendLine("<td align='left'>" + host + "</td>");
            cuerpoCorreo.AppendLine("</font>");
            cuerpoCorreo.AppendLine("</tr>");


            cuerpoCorreo.AppendLine("<tr>");
            cuerpoCorreo.AppendLine("<font face = 'arial '><font color = 'blue'>");
            cuerpoCorreo.AppendLine("<td align='left' width='75'>Usuario</td>");
            cuerpoCorreo.AppendLine("</font>");
            cuerpoCorreo.AppendLine("<font face = 'arial narrow'>");
            cuerpoCorreo.AppendLine("<td align='left'>" + usuario + "</td>");
            cuerpoCorreo.AppendLine("</font>");
            cuerpoCorreo.AppendLine("</tr>");


            cuerpoCorreo.AppendLine("<tr>");
            cuerpoCorreo.AppendLine("<font face = 'arial'><font color = 'blue'>");
            cuerpoCorreo.AppendLine("<td align='left' width='75'>Mensaje</td>");
            cuerpoCorreo.AppendLine("</font>");
            cuerpoCorreo.AppendLine("<font face = 'arial'>");
            cuerpoCorreo.AppendLine("<td align='left'> Error de SP. </td>");
            cuerpoCorreo.AppendLine("</font>");
            cuerpoCorreo.AppendLine("</tr>");

            cuerpoCorreo.AppendLine("<tr>");
            cuerpoCorreo.AppendLine("<font face = 'arial'><font color = 'blue'>");
            cuerpoCorreo.AppendLine("<td align='left' width='75'>Detalle</td>");
            cuerpoCorreo.AppendLine("</font>");
            cuerpoCorreo.AppendLine("<font face = 'arial'>");
            cuerpoCorreo.AppendLine("<td align='left'> Consultar la tabla GenErroresSp, para ver detalle del error. </td>");
            cuerpoCorreo.AppendLine("</font>");
            cuerpoCorreo.AppendLine("</tr>");

            cuerpoCorreo.AppendLine("</table>");
            cuerpoCorreo.AppendLine("</body>");
            cuerpoCorreo.AppendLine("</head>");
            cuerpoCorreo.AppendLine("</html>");

            return cuerpoCorreo.ToString();

        }
        private static string armaCuerpoCorreo(string _tituloException)
        {
            StringBuilder cuerpoCorreo = new StringBuilder();
            string host = getHostName();


            cuerpoCorreo.AppendLine("<html>");
            cuerpoCorreo.AppendLine("    <head>");
            cuerpoCorreo.AppendLine("    <body>");

            cuerpoCorreo.AppendLine("<table border = '1' bordercolor='black' width='500'>");
            cuerpoCorreo.AppendLine("<tr>");
            cuerpoCorreo.AppendLine("<font face = 'arial '><font color = 'blue'>");
            cuerpoCorreo.AppendLine("<td align='left' width='75'>Seccion</td>");
            cuerpoCorreo.AppendLine("</font>");
            cuerpoCorreo.AppendLine("<font face = 'arial narrow'>");
            cuerpoCorreo.AppendLine("<td align='left'>" + _tituloException + "</td>");
            cuerpoCorreo.AppendLine("</font>");
            cuerpoCorreo.AppendLine("</tr>");


            cuerpoCorreo.AppendLine("<tr>");
            cuerpoCorreo.AppendLine("<font face = 'arial '><font color = 'blue'>");
            cuerpoCorreo.AppendLine("<td align='left' width='75'>Equipo</td>");
            cuerpoCorreo.AppendLine("</font>");
            cuerpoCorreo.AppendLine("<font face = 'arial narrow'>");
            cuerpoCorreo.AppendLine("<td align='left'>" + host + "</td>");
            cuerpoCorreo.AppendLine("</font>");
            cuerpoCorreo.AppendLine("</tr>");




            cuerpoCorreo.AppendLine("<tr>");
            cuerpoCorreo.AppendLine("<font face = 'arial'><font color = 'blue'>");
            cuerpoCorreo.AppendLine("<td align='left' width='75'>Mensaje</td>");
            cuerpoCorreo.AppendLine("</font>");
            cuerpoCorreo.AppendLine("<font face = 'arial'>");
            cuerpoCorreo.AppendLine("<td align='left'> Error de SP. </td>");
            cuerpoCorreo.AppendLine("</font>");
            cuerpoCorreo.AppendLine("</tr>");

            cuerpoCorreo.AppendLine("<tr>");
            cuerpoCorreo.AppendLine("<font face = 'arial'><font color = 'blue'>");
            cuerpoCorreo.AppendLine("<td align='left' width='75'>Detalle</td>");
            cuerpoCorreo.AppendLine("</font>");
            cuerpoCorreo.AppendLine("<font face = 'arial'>");
            cuerpoCorreo.AppendLine("<td align='left'> Consultar la tabla GenErroresSp, para ver detalle del error. </td>");
            cuerpoCorreo.AppendLine("</font>");
            cuerpoCorreo.AppendLine("</tr>");

            cuerpoCorreo.AppendLine("</table>");
            cuerpoCorreo.AppendLine("</body>");
            cuerpoCorreo.AppendLine("</head>");
            cuerpoCorreo.AppendLine("</html>");

            return cuerpoCorreo.ToString();

        }
        private static string armaCuerpoCorreo(string _tituloException, Exception ex, string _usuario)
        {
            StringBuilder cuerpoCorreo = new StringBuilder();
            string host = getHostName();
            string usuario = _usuario;

            cuerpoCorreo.AppendLine("<html>");
            cuerpoCorreo.AppendLine("    <head>");
            cuerpoCorreo.AppendLine("    <body>");

            cuerpoCorreo.AppendLine("<table border = '1' bordercolor='black' width='500'>");
            cuerpoCorreo.AppendLine("<tr>");
            cuerpoCorreo.AppendLine("<font face = 'arial '><font color = 'blue'>");
            cuerpoCorreo.AppendLine("<td align='left' width='75'>Seccion</td>");
            cuerpoCorreo.AppendLine("</font>");
            cuerpoCorreo.AppendLine("<font face = 'arial narrow'>");
            cuerpoCorreo.AppendLine("<td align='left'>" + _tituloException + "</td>");
            cuerpoCorreo.AppendLine("</font>");
            cuerpoCorreo.AppendLine("</tr>");


            cuerpoCorreo.AppendLine("<tr>");
            cuerpoCorreo.AppendLine("<font face = 'arial '><font color = 'blue'>");
            cuerpoCorreo.AppendLine("<td align='left' width='75'>Equipo</td>");
            cuerpoCorreo.AppendLine("</font>");
            cuerpoCorreo.AppendLine("<font face = 'arial narrow'>");
            cuerpoCorreo.AppendLine("<td align='left'>" + host + "</td>");
            cuerpoCorreo.AppendLine("</font>");
            cuerpoCorreo.AppendLine("</tr>");


            cuerpoCorreo.AppendLine("<tr>");
            cuerpoCorreo.AppendLine("<font face = 'arial '><font color = 'blue'>");
            cuerpoCorreo.AppendLine("<td align='left' width='75'>Usuario</td>");
            cuerpoCorreo.AppendLine("</font>");
            cuerpoCorreo.AppendLine("<font face = 'arial narrow'>");
            cuerpoCorreo.AppendLine("<td align='left'>" + usuario + "</td>");
            cuerpoCorreo.AppendLine("</font>");
            cuerpoCorreo.AppendLine("</tr>");


            cuerpoCorreo.AppendLine("<tr>");
            cuerpoCorreo.AppendLine("<font face = 'arial'><font color = 'blue'>");
            cuerpoCorreo.AppendLine("<td align='left' width='75'>Mensaje</td>");
            cuerpoCorreo.AppendLine("</font>");
            cuerpoCorreo.AppendLine("<font face = 'arial'>");
            cuerpoCorreo.AppendLine("<td align='left'>" + ex.Message.ToString() + "</td>");
            cuerpoCorreo.AppendLine("</font>");
            cuerpoCorreo.AppendLine("</tr>");

            cuerpoCorreo.AppendLine("<tr>");
            cuerpoCorreo.AppendLine("<font face = 'arial'><font color = 'blue'>");
            cuerpoCorreo.AppendLine("<td align='left' width='75'>Detalle</td>");
            cuerpoCorreo.AppendLine("</font>");
            cuerpoCorreo.AppendLine("<font face = 'arial'>");
            cuerpoCorreo.AppendLine("<td align='left'>" + ex.ToString() + "</td>");
            cuerpoCorreo.AppendLine("</font>");
            cuerpoCorreo.AppendLine("</tr>");

            cuerpoCorreo.AppendLine("</table>");
            cuerpoCorreo.AppendLine("</body>");
            cuerpoCorreo.AppendLine("</head>");
            cuerpoCorreo.AppendLine("</html>");

            return cuerpoCorreo.ToString();

        }
        private static string armaCuerpoCorreo(string _tituloException, Exception ex)
        {
            StringBuilder cuerpoCorreo = new StringBuilder();
            string host = getHostName();


            cuerpoCorreo.AppendLine("<html>");
            cuerpoCorreo.AppendLine("    <head>");
            cuerpoCorreo.AppendLine("    <body>");

            cuerpoCorreo.AppendLine("<table border = '1' bordercolor='black' width='500'>");
            cuerpoCorreo.AppendLine("<tr>");
            cuerpoCorreo.AppendLine("<font face = 'arial '><font color = 'blue'>");
            cuerpoCorreo.AppendLine("<td align='left' width='75'>Seccion</td>");
            cuerpoCorreo.AppendLine("</font>");
            cuerpoCorreo.AppendLine("<font face = 'arial narrow'>");
            cuerpoCorreo.AppendLine("<td align='left'>" + _tituloException + "</td>");
            cuerpoCorreo.AppendLine("</font>");
            cuerpoCorreo.AppendLine("</tr>");


            cuerpoCorreo.AppendLine("<tr>");
            cuerpoCorreo.AppendLine("<font face = 'arial '><font color = 'blue'>");
            cuerpoCorreo.AppendLine("<td align='left' width='75'>Equipo</td>");
            cuerpoCorreo.AppendLine("</font>");
            cuerpoCorreo.AppendLine("<font face = 'arial narrow'>");
            cuerpoCorreo.AppendLine("<td align='left'>" + host + "</td>");
            cuerpoCorreo.AppendLine("</font>");
            cuerpoCorreo.AppendLine("</tr>");



            cuerpoCorreo.AppendLine("<tr>");
            cuerpoCorreo.AppendLine("<font face = 'arial'><font color = 'blue'>");
            cuerpoCorreo.AppendLine("<td align='left' width='75'>Mensaje</td>");
            cuerpoCorreo.AppendLine("</font>");
            cuerpoCorreo.AppendLine("<font face = 'arial'>");
            cuerpoCorreo.AppendLine("<td align='left'>" + ex.Message.ToString() + "</td>");
            cuerpoCorreo.AppendLine("</font>");
            cuerpoCorreo.AppendLine("</tr>");

            cuerpoCorreo.AppendLine("<tr>");
            cuerpoCorreo.AppendLine("<font face = 'arial'><font color = 'blue'>");
            cuerpoCorreo.AppendLine("<td align='left' width='75'>Detalle</td>");
            cuerpoCorreo.AppendLine("</font>");
            cuerpoCorreo.AppendLine("<font face = 'arial'>");
            cuerpoCorreo.AppendLine("<td align='left'>" + ex.ToString() + "</td>");
            cuerpoCorreo.AppendLine("</font>");
            cuerpoCorreo.AppendLine("</tr>");

            cuerpoCorreo.AppendLine("</table>");
            cuerpoCorreo.AppendLine("</body>");
            cuerpoCorreo.AppendLine("</head>");
            cuerpoCorreo.AppendLine("</html>");

            return cuerpoCorreo.ToString();

        }

        private static string getHostName()
        {
            string hName = "";

            System.Net.IPHostEntry host = new System.Net.IPHostEntry();
            IPAddress[] ip = host.AddressList;
            hName = System.Net.Dns.GetHostName();
            /*
            //Split out the host name from the FQDN
            if (host.HostName.Contains("."))
            {
                string[] sSplit = host.HostName.Split('.');
                hName = sSplit[0].ToString();
            }
            else
            {
                hName = host.HostName.ToString();
            }
            */
            return hName;
        }
    }
}
